Lightweight Semi-Dynamic Methods for EÆcient and E ective Program Slicing
نویسندگان
چکیده
When we try to debug a large program e ectively, it is very important to separate a suspicious program portion from the overall source program. Program slicing is a promising technique to extract a program portion; however, it remains diÆcult issues. Static slicing sometimes produces a large portion of the source program, especially for a program with arrays and pointers. Dynamic slicing requires unacceptably huge run-time overhead. In this paper, we discuss intermediate semi-dynamic methods between static and dynamic slicing. We propose two slicing methods named call-mark slicing and dependence-cache slicing. These algorithms have been implemented in our experimental slicing system, and execution data for several sample programs have been collected. The result shows that call-mark slicing reduces the slice size by about 10{20% from the static slice size, with very little overhead increase. Also, dependence-cache slice reduces by about 30{90%, even for programs using arrays, with a ordable run-time overhead increase. These slicing methods will be important features for e ective debugging environments. Author address: Katsuro Inoue Department of Informatics, Graduate School of Engineering Science, Osaka University, 1-3 Machikaneyama, Toyonaka, Osaka 560-8531, Japan Ph. +81-6-6850-6570 Fax +81-6-6850-6574 E-mail [email protected] This work is partly supported by Ministry of Education, Science, Sports, and Culture, grant-in-aid for priority areas \Principles for Constructing Evolutionary Software".
منابع مشابه
A Slicing Method for Object-Oriented Programs Using Lightweight Dynamic Information
Program slicing has been used for efficient program debugging activities. Program slice is computed by analyzing dependence relations between program statements. We can divide dependence analyses into two categories, static and dynamic; the former requires little analysis costs, but the resulting slices are large. The latter has opposite characters. In this paper, we propose a program slicing m...
متن کاملDYBS: A Lightweight Dynamic Slicing Framework for Diagnosing Attacks on x86 Binary Programs
Nowadays, applications are usually large-scale, this making tasks of comprehending and debugging software rather complicated. As a dynamic reduction technique for simplifying programs, dynamic program slicing is an effective and important approach for locating and diagnosing software attacks. However, most of the existing dynamic slicing tools perform slicing at the source code level, but the s...
متن کاملA Lightweight Approach to Program Specialization⋆
Within the imperative programming paradigm, program slicing has been widely used as a basis to solve many software engineering problems, like debugging, testing, differencing, specialization, and merging. In this work, we present a lightweight approach to program specialization of lazy functional logic programs which is based on dynamic slicing. The kind of specialization performed by our appro...
متن کاملDependence-Cache Slicing: A Program Slicing Method Using Lightweight Dynamic Information
When we try to debug or to comprehend a large program, it is important to separate suspicious program portions from the overall source program. Program slicing is a promising technique used to extract a program portion; however, such slicing sometimes raises difficulties. Static slicing sometimes produces a large portion of a source program, especially for programs with array and pointer variab...
متن کاملProgram Specialization Based on Dynamic Slicing
Within the imperative programming paradigm, program slicing has been widely used as a basis to solve many software engineering problems, like program understanding, debugging, testing, differencing, specialization, and merging. In this work, we present a lightweight approach to program slicing in lazy functional logic languages and discuss its potential applications in the context of pervasive ...
متن کامل